package com.orangecy.infrastructure.persistent.common;

import org.apache.commons.collections.CollectionUtils;

import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;

/**
 * @Author : orangeCy.奕
 * @Product : 猎豹养成产品源码
 * @Time : 2021/10/29
 * @Desc :由于每个仓储层都需要经过数据模型转为可传输模型 采用泛型接口提取
 */
public interface Convert<DO,DTO> {
    /**
     * DO -> DTO
     * @param d
     * @return
     */
    DTO convertDTO(DO d);

    /**
     * 批量DO -> DTO
     * @param ds
     * @return
     */
    default List<DTO> convertDTOList(List<DO> ds) {
        if(CollectionUtils.isEmpty(ds)){
            return Collections.emptyList();
        }
        return ds.stream().map(this::convertDTO).collect(Collectors.toList());
    }

    // DTO -> DO 同理
}